Модуль:Tables/Test2
local p = {} function p.AutoNumBox2(frame) local g = frame:getParent().args1 local NumStr = tonumber (frame:getParent().args'Старт' or "1"); g = g:gsub(".* .*", "%1") local Titul = g:sub(1, (g:find ("\n!") or 1) - 1) g = g:sub((g:find ("\n!") or 1)) g = g:gsub("||", "\n|") local Pos0 = 0 while g:find("|%-^*(|^\n*\n)", Pos0 + 1) ~= nil do Pos1, Pos2 = g:find("|%-^*(|^\n*\n)", Pos0 + 1) while g:find("|", Pos1 + 1) ~= nil and g:find("|", Pos1 + 1) < Pos2 do Pos1 = g:find("|", Pos1 + 1) end if g:find("%d", Pos1) ~= nil and g:find("%d", Pos1) < Pos2 then Pos3, Pos4 = g:find("%d+", Pos1) g = g:sub(1, Pos3 - 1)..NumStr..g:sub(Pos4 + 1) NumStr = NumStr + 1 end Pos0 = Pos2 end return " " end -- ********************************************************** function p.AutoNumBox(frame) local g = frame:getParent().args1 local NumStr = tonumber (frame:getParent().args'Старт' or "1"); local Pattern = "$#Pj/S.l0'_Y4O.rEEcRmd Pos3 then Pos4 = Pos3 elseif Pos2 < Pos3 then Pos4 = Pos2 else return g end Pos5 = string.find(string.sub(g, 1, Pos4-1), "|^*$") --do return Pos4..", "..Pos5..", "..string.reverse(string.sub(g, 1, Pos3))..", ".. string.len(g) ..", ".. string.sub(g, 1, Pos3) end --do return string.find(string.sub(g, 1, Pos3-1), "|", 1) .."," .. string.sub(g, 2, Pos3-1) end -- Pos6 = string.len(g) + Pos4 - Pos5 + 1 --do return Pos4..", "..Pos5..", "..Pos6..", ".. string.len(g) ..", ".. string.sub(g, 1, Pos6) end g = string.sub(g, 1, Pos5)..NumStr..string.sub(g, Pos4) Pos = Pos4 NumStr = NumStr + 1 end --%s*#%s*%s*|" while string.find (g, pattern) ~= nil do g = g:gsub(pattern, "|"..NumStr.."\n".."|", 1) NumStr = NumStr + 1 end -- return g end -- ********************************************************** function p.AutoNumSort(frame) local args = frame:getParent().args local Column = tonumber(args'Столбцов' or "0") if Column 0 then return "Невозможно определить количество столбцов" end local TempSort = (args'Сортировка' or "0") local SortColumn = tonumber(string.match(TempSort, "%d*")) if SortColumn > Column then SortColumn = 0 end local SortAsNumber = string.match(TempSort, "#") ~= nil local SortAscend = true if SortColumn > 0 then if SortAsNumber then SortAscend = string.find(TempSort, "<") ~= nil else SortAscend = string.find(TempSort, ">") nil end end -- do return Column end local Strings={} local TempString = {} local NumCell = 0 while args+ 1 ~= nil or NumCell%Column ~= 0 do NumCell = NumCell + 1 table.insert(TempString, (argsNumCell or "")) if NumCell%Column 0 then if SortColumn > 1 then if SortAsNumber then TempString.Key = tonumber(TempStringSortColumn:gsub(",", "."):gsub("^%d%.", "") or 0) else TempString.Key = (TempStringSortColumn or "") end else TempString.Key = tonumber(NumCell) end TempString.Group = TempString1:gsub("^a-zA-Zа-яА-Я0-9", "") table.insert(Strings, TempString) TempString = {} end end local function SortString(a, b) if a.Group < b.Group then return true end if a.Group > b.Group then return false end if SortAscend then return a.Key < b.Key else return b.Key < a.Key end end -- Сортировка внутри группы table.sort(Strings, SortString) -- Формироание HTML-таблицы local HtmlBuilder = require('Module:HtmlBuilder') local HTML = HtmlBuilder.create('table') HTML.attr('class', (args'Оформление' or "standard")) -- Название таблицы if args'Название' then HTML.tag('caption').wikitext(args'Название') end local TempRow -- Строка заголовков TempRow = HTML.tag('tr') TempRow.tag('th') .css('width', (args'Ширина1' or "")) .wikitext(args'Заголовок1' or "№") for i = 2, Column do TempRow.tag('th') .css('width', (args"Ширина"..i or "")) .wikitext(args"Заголовок"..i or "Заголовок"..i) end local Aligns = {(args'Выравнивание1' or "center")} for i = 2, Column do Alignsi = (args"Выравнивание"..i or "left") end -- Строки данных local HideNum = 0 local NumStr = tonumber (args'Старт' or "1") - 1 local Backlight = (frame.args'Подсветка' or "class='bright'"):gsub("\"", "'") for Index, TempString in pairs(Strings) do TempRow = HTML.tag('tr') -- Стиль оформления строк if string.find(TempString1, "%$") ~= nil then TempRow.attr('class', 'shadow') elseif string.find(TempString1, "%%") ~= nil then TempRow.attr('class', 'bright') elseif string.find(TempString1, "@") ~= nil then TempRow.attr('class', 'dark') elseif string.find(TempString1, "%+") ~= nil then for Part in string.gmatch(Backlight, "%w*=%s*'^'*'") do TempRow.attr(string.match(Part, "(^=*)="), string.match(Part, "'(^'*)'")) end end if string.find(TempString1, "!") ~= nil then TempRow.attr('style', 'font-weight:bold') end -- Вывод номера строки if string.find(TempString1, "-") ~= nil then HideNum = HideNum + 0.000001 TempRow.tag('td') .tag('span') .attr('style', 'display: none; speak: none;') .wikitext( tonumber(NumStr + HideNum)) else NumStr = NumStr + 1 TempRow.tag('td') .attr('align', Aligns1) .wikitext(tonumber(NumStr)) end -- Вывод ячеек строки for i = 2, Column do TempRow.tag('td') .attr('align', Alignsi) .wikitext(TempStringi) end end return tostring(HTML) end -- Участник:Temirov1960/Тест -- return p